.TH std::ranges::stride_view::stride_view 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::ranges::stride_view::stride_view \- std::ranges::stride_view::stride_view

.SH Synopsis
   constexpr explicit stride_view( V base, ranges::range_difference_t<V>  (since C++23)
   stride );

   Constructs a stride_view initializing the underlying data members:

     * move construct the underlying view base_ with std::move(base),
     * construct the stride_ with stride.

   If stride < 1 the behavior is undefined.

.SH Parameters

   base   - the source view
   stride - the stride value

.SH Example


// Run this code

 #include <algorithm>
 #include <iostream>
 #include <iterator>
 #include <ranges>
 #include <string_view>

 void print(std::string_view rem, auto v, std::string_view term = "\\n")
 {
     std::cout << rem << ": ";
     std::ranges::copy(v, std::ostream_iterator<int>(std::cout, " "));
     std::cout << term;
 };

 int main()
 {
     auto source = std::views::iota(1, 10);
     print("source", source);

     for (int stride_value : std::views::iota(1, 6))
     {
         auto strided_view = std::views::stride(source, stride_value);

         print("stride", std::views::single(stride_value), "-> ");
         print("result", strided_view);
     }
 }

.SH Output:

 source: 1 2 3 4 5 6 7 8 9
 stride: 1 -> result: 1 2 3 4 5 6 7 8 9
 stride: 2 -> result: 1 3 5 7 9
 stride: 3 -> result: 1 4 7
 stride: 4 -> result: 1 5 9
 stride: 5 -> result: 1 6
